package com.zenithmind.mall.pojo.query;

import com.zenithmind.common.query.BaseQuery;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 用户优惠券查询条件
 * 
 * @author ZenithMind Team
 * @since 2025-06-09
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class UserCouponQuery extends BaseQuery {

    /**
     * 用户ID
     */
    private String userId;

    /**
     * 优惠券ID
     */
    private String couponId;

    /**
     * 优惠券名称（模糊搜索）
     */
    private String couponName;

    /**
     * 优惠券类型（1-满减券，2-折扣券，3-免邮券）
     */
    private Integer couponType;

    /**
     * 状态（0-未使用，1-已使用，2-已过期）
     */
    private Integer status;

    /**
     * 最低优惠金额
     */
    private BigDecimal minDiscountAmount;

    /**
     * 最高优惠金额
     */
    private BigDecimal maxDiscountAmount;

    /**
     * 最低消费金额
     */
    private BigDecimal minAmount;

    /**
     * 最高消费金额
     */
    private BigDecimal maxAmount;

    /**
     * 是否可用（根据当前时间判断）
     */
    private Boolean available;

    /**
     * 适用商品范围（0-全部商品，1-指定分类，2-指定商品）
     */
    private Integer applicableScope;

    /**
     * 领取开始时间
     */
    private LocalDateTime receiveStartTime;

    /**
     * 领取结束时间
     */
    private LocalDateTime receiveEndTime;

    /**
     * 使用开始时间
     */
    private LocalDateTime useStartTime;

    /**
     * 使用结束时间
     */
    private LocalDateTime useEndTime;

    /**
     * 有效期开始时间
     */
    private LocalDateTime validStartTime;

    /**
     * 有效期结束时间
     */
    private LocalDateTime validEndTime;

    /**
     * 即将过期（多少天内过期）
     */
    private Integer expireDays;

    /**
     * 排序字段（receiveTime-领取时间，useTime-使用时间，endTime-过期时间）
     */
    private String sortField = "receiveTime";

    /**
     * 排序方向（asc-升序，desc-降序）
     */
    private String sortOrder = "desc";
}
